package com.imax.center.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.imax.center.common.Result;
import com.imax.center.domain.HomeCameraDomain;
import com.imax.center.domain.UpdateCameraOrderDomain;
import com.imax.center.model.EzvizChannel;
import com.imax.center.model.EzvizDevice;

import java.util.List;
import java.util.Map;

public interface H3yunService {
    /**
     * 获取VIP等级列表
     *
     * @return VIP等级列表
     */
    Result<JSONArray> getVipLevels();
    
    /**
     * 创建VIP等级
     *
     * @param levelName VIP等级名称
     * @param levelRemark VIP等级备注
     * @return 创建结果
     */
    Result<JSONObject> createVipLevel(String levelName, String levelRemark);
    
    /**
     * 保存萤石云设备信息到氚云平台
     *
     * @param device 萤石云设备信息
     * @return 保存结果
     */
    Result<JSONObject> saveDeviceInfo(EzvizDevice device);
    
    /**
     * 批量保存萤石云设备信息到氚云平台
     *
     * @param devices 萤石云设备信息列表
     * @return 保存结果
     */
    Result<JSONArray> batchSaveDeviceInfo(List<EzvizDevice> devices);

    /**
     * 查询设备信息
     *
     * @param queryParams 查询参数，支持设备ID、设备名称等字段
     * @return 设备信息列表
     */
    Result<JSONArray> queryDeviceInfo(Map<String, Object> queryParams);

    /**
     * 保存萤石云通道信息到氚云平台
     *
     * @param device 萤石云通道信息
     * @return 保存结果
     */
    Result<JSONObject> saveChannelInfo(EzvizChannel device);

    /**
     * 批量保存萤石云通道信息到氚云平台
     *
     * @param devices 萤石云通道信息列表
     * @return 保存结果
     */
    Result<JSONArray> batchSaveChannelInfo(List<EzvizChannel> devices);
    
    /**
     * 查询通道信息
     *
     * @param queryParams 查询参数，支持通道ID、通道名称等字段
     * @return 通道信息列表
     */
    Result<JSONArray> queryChannelInfo(Map<String, Object> queryParams, String powerCode, String orgObjectId);

    Result<JSONArray> getHomeChannelList(String powerCode, String orgObjectId);

    Result<String> updateHomeCameraOrder(List<UpdateCameraOrderDomain> list);

    Result<JSONArray> getCheckList(String powerCode, String unitId);

    /**
     * 查询并批量删除传感器事件数据
     *
     * @param cn 需要删除的对象ID列表
     * @return 删除结果
     */
    Result<JSONObject> queryAndBatchDelSensorEventData(String cn);

    /**
     * 查询所有设备信息（支持大量数据分页查询）
     *
     * @param queryParams 查询参数，支持设备ID、设备名称等字段
     * @return 所有设备信息列表
     */
    Result<JSONArray> queryAllDeviceInfo(Map<String, Object> queryParams);

    /**
     * 查询所有通道信息（支持大量数据分页查询）
     *
     * @param queryParams 查询参数，支持通道ID、通道名称等字段
     * @return 所有通道信息列表
     */
    Result<JSONArray> queryAllChannelInfo(Map<String, Object> queryParams);
    
    /**
     * 查询客户信息列表
     *
     * @return 客户信息列表
     */
    Result<JSONArray> queryChildrenOrgList(String ObjectId, String powerCode, String orgObjectId);

    /**
     * 查询区域树
     *
     * @param parentCode 父级区域编码
     * @return 区域树
     */
    Result<JSONObject> queryRegionTree(String parentCode);

    /**
     * 获取有下级单位的行政区划树
     *
     * @return 区域树
     */
    Result<JSONObject> getPowerRegionTree(String powerCode, String orgObjectId);

    Result<JSONObject> getPowerOrgTree(String powerCode, String orgObjectId);

    /**
     * 获取系统配置
     *
     * @return 系统配置信息
     */
    Result<JSONObject> getPowerConfig();

    Result<JSONObject> getStationConfig(String areaCode);

    Result<JSONArray> getHomeCameraList(String powerCode, String orgObjectId);

    Result<JSONObject> addHomeCamera(HomeCameraDomain vo);

    Result<String> deleteHomeCamera(String objectId);

    Result<JSONArray> getEventList(String areaCode);

    //统计昨日各医院污水处理量
    Result<JSONArray> getYesterdayW00000Count();

    //写入昨日各医院污水处理量
    Result<String> addYesterdayW00000Count(JSONArray list);

    Result<JSONArray> getWorkOrder(String areaCode);

    Result<JSONArray> getSensorDeviceList(String powerCode, String unitId);

    Result<JSONArray> getEventPicTempList();

    void queryEventTempPicAndDelete();

    void queryAndBatchDelEventPicTest();

    Result<JSONArray> getCommonConfig();

}